﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessObjects.BO_GetObjects;
using DigiLib;
using System.Data;

public partial class Administrator_Controls_UpdateGroupUsers : System.Web.UI.UserControl {
    private static int group_id = 0;
    private DataTable objDT = null;

    protected void Page_Load(object sender, EventArgs e) {
        if (!IsPostBack) {
            LoadData();
        }
    }

    protected void LoadData() {
        try {
            ddlParentGroup.DataTextField = "GROUP_NAME";
            ddlParentGroup.DataValueField = "GROUP_USER_ID";
            ddlParentGroup.DataSource = BO_cms_group_users.SelectAll(1);
            ddlParentGroup.DataBind();

            if (Request["id"] != null) {
                group_id = Convert.ToInt32(Request["id"]);
                FillUpForm(group_id);
            }
        } catch (Exception ex) {
            divMessage.InnerHtml = MessageBox.Error("Lỗi", "Phát hiện lỗi sau: " + ex.Message);
        }
    }

    protected void FillUpForm(int group_id) {
        #region Load group info
        objDT = null;
        objDT = BO_cms_group_users.Search(group_id);
        if (objDT == null || objDT.Rows.Count == 0) {
            divMessage.InnerHtml = MessageBox.Error("Lỗi", "Không tồn tại nhóm nào có ID = " + group_id);
            return;
        }

        ddlParentGroup.SelectedValue = objDT.Rows[0]["PARENT_ID"].ToString();
        txtGroupName.Text = objDT.Rows[0]["GROUP_NAME"].ToString();
        txtDesc.Text = objDT.Rows[0]["DESCRIPTION"].ToString();
        #endregion

        #region Load all permission
        objDT = null;
        objDT = BO_cms_admin_modules.Inside(0);
        if (objDT == null || objDT.Rows.Count == 0) {
            divMessage.InnerHtml = MessageBox.Warning("Cảnh bảo", "Không tồn tại quyền nào trong hệ thống");
            return;
        }

        lstPermission.Items.Clear();
        foreach (DataRow dr in objDT.Rows) {
            lstPermission.Items.Add(new ListItem(dr["DESCRIPTION"].ToString(), dr["ADMIN_MODULE_ID"].ToString()));
        }
        #endregion

        #region Selected items in ListBox
        objDT = null;
        objDT = BO_cms_groups_in_roles.Search(group_id);
        if (objDT == null || objDT.Rows.Count == 0) {
            divMessage.InnerHtml = MessageBox.Warning("Cảnh báo", "Nhóm này hiện tại chưa được phân quyền, hãy chọn các quyền bên dưới");
            return;
        }

        foreach (DataRow dr in objDT.Rows) {
            foreach (ListItem item in lstPermission.Items) {
                if (dr["ADMIN_MODULE_ID"].ToString().Equals(item.Value)) {
                    item.Selected = true;
                }
            }
        }
        #endregion
    }

    protected void btnSubmit_Click(object sender, EventArgs e) {
        try {
            int parent_group_id = Convert.ToInt32(ddlParentGroup.SelectedValue);

            #region Update group
            BO_cms_group_users.Update(group_id
                , parent_group_id
                , txtGroupName.Text.Trim()
                , txtDesc.Text.Trim()
                , DateTime.Now
                , Administrator.USER_NAME);
            #endregion

            #region Grant Permission
            var selectedItems = lstPermission.Items.GetSelectedItems();
            if (selectedItems.Count() > 0) {
                foreach (ListItem item in selectedItems) {
                    BO_cms_groups_in_roles.Insert(group_id, Convert.ToInt32(item.Value));
                }
            }
            #endregion

            divMessage.InnerHtml = MessageBox.Success("Thông báo", "Cập nhật thông tin nhóm thành công!");
        } catch (Exception ex) {
            divMessage.InnerHtml = MessageBox.Error("Lỗi", "Phát hiện lỗi sau: " + ex.Message);
        }
    }
}